/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package co.uniandes.patrones.beans;

import co.uniandes.patrones.entidades.AdministradorSolicitudes;
import co.uniandes.patrones.entidades.AdministradorUsuarios;
import co.uniandes.patrones.entidades.Solicitud;
import co.uniandes.patrones.entidades.Usuario;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

/**
 *
 * @author alvar-go@uniandes.edu.co
 */
public class SolicitudesVehialpesBean {

    private final static String SOLICITUD_REVISADA = "solicitudesvehialpes";

    private String identificacion;

    private List<String> placas;

    private String placaSeleccionada;

    private Solicitud solicitud;

    private AdministradorSolicitudes admin;


    private String idUsuario;

    private String taller;

    private String estado;

    private String descripcion;

    private double costo;

    private List<String> imagenes;

    private Usuario clienteActual;

    private boolean activos;

    public SolicitudesVehialpesBean() {
        cargarDatos();
    }

    public SolicitudesVehialpesBean(String identificacion, List<String> placas, String placaSeleccionada, Solicitud solicitud, AdministradorSolicitudes admin, String idUsuario, String taller, String estado, String descripcion, double costo, List<String> imagenes) {
        this.identificacion = identificacion;
        this.placas = placas;
        this.placaSeleccionada = placaSeleccionada;
        this.solicitud = solicitud;
        this.admin = admin;
        this.idUsuario = idUsuario;
        this.taller = taller;
        this.estado = estado;
        this.descripcion = descripcion;
        this.costo = costo;
        this.imagenes = imagenes;
        activos = true;
    }

    private void cargarDatos(){
        FacesContext context = FacesContext.getCurrentInstance();
        HttpSession sesion = (HttpSession) context.getExternalContext().getSession(false);
        if( sesion != null){
             AdministradorUsuarios ad = AdministradorUsuarios.getInstancia();
             admin = AdministradorSolicitudes.getInstancia();
             clienteActual = ad.buscarUsuario((String)sesion.getAttribute(IngresoBean.SESION_LOGIN));
             identificacion = clienteActual.getTipo() +":" + clienteActual.getLogin();
             placas = admin.darSolicitudesAceptar();
        }
    }

    public double getCosto() {
        return costo;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public String getEstado() {
        return estado;
    }

    public AdministradorSolicitudes getAdmin() {
        return admin;
    }

    public String getIdUsuario() {
        return idUsuario;
    }

    public String getIdentificacion() {
        return identificacion;
    }

    public List<String> getImagenes() {
        return imagenes;
    }

    public String getPlacaSeleccionada() {
        return placaSeleccionada;
    }

    public List<String> getPlacas() {
        return placas;
    }

    public Solicitud getSolicitud() {
        return solicitud;
    }

    public String getTaller() {
        return taller;
    }

    public void setCosto(double costo) {
        this.costo = costo;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public void setAdmin(AdministradorSolicitudes admin) {
        this.admin = admin;
    }

    public void setIdUsuario(String idUsuario) {
        this.idUsuario = idUsuario;
    }

    public void setIdentificacion(String identificacion) {
        this.identificacion = identificacion;
    }

    public void setImagenes(List<String> imagenes) {
        this.imagenes = imagenes;
    }

    public void setPlacaSeleccionada(String placaSeleccionada) {
        this.placaSeleccionada = placaSeleccionada;
    }

    public void setPlacas(List<String> placas) {
        this.placas = placas;
    }

    public void setSolicitud(Solicitud solicitud) {
        this.solicitud = solicitud;
    }

    public void setTaller(String taller) {
        this.taller = taller;
    }

    public String aceptarSolictud(){
        if( solicitud != null ){
            solicitud.setEstado(Solicitud.ESTADO_DESC_ACEPTADA);
        }
        return SOLICITUD_REVISADA;
    }

    public String rechazarSolictud(){
        if( solicitud != null ){
            solicitud.setEstado(Solicitud.ESTADO_DESC_RECHAZADA);
        }
        return SOLICITUD_REVISADA;
    }

    public String cancelarSolictud(){
        if( solicitud != null ){
            solicitud.setEstado(Solicitud.ESTADO_CANCELADA);
        }
        return SOLICITUD_REVISADA;
    }

    public void verSolicitud(){
        if(placaSeleccionada != null){
            solicitud = admin.darSolicitud(placaSeleccionada);
            idUsuario = solicitud.getIdUsuario();
            taller = solicitud.getTallerString();
            estado = solicitud.getEstado();
            descripcion = solicitud.getDescripcion();
            costo = solicitud.getCosto();
            imagenes = solicitud.getImagenes();
            if(solicitud.getEstado().equals(Solicitud.ESTADO_TERMINADA)){
                activos = true;
            }else{
                activos = false;
            }
        }
    }

    public boolean isActivos() {
        return activos;
    }

    public void setActivos(boolean activos) {
        this.activos = activos;
    }
}
